<template>
  <div class="_wz_cent_main _wz_hiddenPerils">
    <Card dis-hover :bordered="true" style="margin:0 0 10px;">
      <p slot="title">搜索</p>
      <div slot="extra">
        <Button type="info" size="small" v-if="!searchType" @click="searchType = true" icon="ios-arrow-down">更多</Button>
        <Button type="info" size="small" v-else @click="searchType = false" icon="ios-arrow-up">收起</Button>
      </div>
      <Form :model="formDataSearch" label-position="right" :label-width="100" inline>
        <FormItem label="隐患排查">
          <Input v-model="formDataSearch.riskInspectName" placeholder="请输入隐患排查" clearable></Input>
        </FormItem>
        <FormItem label="排查类型">
          <i-select v-model.number="formDataSearch.riskInspectType" filterable placeholder="请选择排查类型" clearable>
            <Option :value="1">计划排查</Option>
            <Option :value="2">主动排查</Option>
          </i-select>
        </FormItem>
        <FormItem label="排查状态" v-if="searchType">
          <i-select v-model.number="formDataSearch.riskInspectState" filterable placeholder="请选择排查状态" clearable>
            <Option :value="0">未完成</Option>
            <Option :value="1">已完成</Option>
          </i-select>
        </FormItem>
        <FormItem label="隐患部位" v-if="searchType">
          <Input v-model="formDataSearch.riskPositionName" placeholder="请输入隐患部位" clearable></Input>
        </FormItem>
        <FormItem label="隐患类型" v-if="searchType">
          <i-select v-model.number="formDataSearch.riskPositionType" filterable placeholder="请选择隐患类型" clearable>
            <Option :value="1">基础管理</Option>
            <Option :value="2">设备设施</Option>
            <Option :value="3">作业活动</Option>
          </i-select>
        </FormItem>
        <FormItem label="特种设备" v-if="searchType">
          <i-select v-model.number="formDataSearch.riskPositionDeviceState" filterable placeholder="请选择特种设备" clearable>
            <Option :value="0">否</Option>
            <Option :value="1">是</Option>
          </i-select>
        </FormItem>
        <FormItem label="排查部门" v-if="searchType">
          <Input v-model="formDataSearch.riskInspectInOrgName" placeholder="请输入排查部门" clearable></Input>
        </FormItem>
        <FormItem label="排查人员" v-if="searchType">
          <Input v-model="formDataSearch.riskInspectUserName" placeholder="请输入排查人员" clearable></Input>
        </FormItem>
        <FormItem label="运输企业" v-if="searchType">
          <i-select v-model="formDataSearch.deptUuid" filterable placeholder="请选择运输企业" clearable>
            <Option v-for="item in subDeptList" :value="item.uuid" :key="item.uuid">{{ item.deptName }}</Option>
          </i-select>
        </FormItem>
        <FormItem>
          <Button type="primary" @click="searchSubmit">搜索</Button>
        </FormItem>
      </Form>
    </Card>
    <Card dis-hover :bordered="true">
      <p slot="title">列表</p>
      <p slot="extra">
        <Button type="primary" @click="addTableData">添加</Button>
      </p>
      <wzTbale ref="wzTbale" :tableData="tableData"></wzTbale>
    </Card>

    <Drawer :title="formTitle" v-model="formOperation" width="1100" :mask-closable="false" :draggable="true" :styles="formOperationStyles">
      <hiddenPerilsAdd v-if="formOperation" @closeFun="closeFun" :selectData="selectData"></hiddenPerilsAdd>
    </Drawer>

    <Drawer title="排查" v-model="hiddenTrouble" width="1100" :mask-closable="false" :draggable="true">
      <hiddenTroubleAdd v-if="hiddenTrouble" @closeFun="closeFun" :selectData="selectData"></hiddenTroubleAdd>
    </Drawer>

    <Drawer title="详情" v-model="seeMoreType" width="990" :mask-closable="false" :draggable="true">
      <hiddenPerilsDetails v-if="seeMoreType" :selectData="selectData"></hiddenPerilsDetails>
    </Drawer>

    <Spin size="large" fix v-if="spinShow"></Spin>
  </div>
</template>
<script>


import hiddenPerilsAdd from "./hiddenPerilsAdd";
import hiddenPerilsDetails from "./hiddenPerilsDetails";
import hiddenTroubleAdd from "./hiddenTroubleAdd";
import wzTbale from "../../components/table/table";

export default {
  props: ['hiddenPerilsData'],//接收来自父组件的数据  执行计划 跳转过来的
  components: {
    hiddenPerilsAdd,//添加
    hiddenPerilsDetails,//查看详情
    hiddenTroubleAdd,//隐患添加
    wzTbale,//列表
  },
  data() {
    return {
      spinShow: false,//本页加载
      hiddenTrouble: false,//添加隐患
      searchType: false,//搜索条件
      subDeptList: [],//运输企业
      seeMoreType: false,
      formDataSearch: {},//搜索表单数据
      formTitle: '',
      selectData: {},
      formOperation: false,//表单左侧移出
      formOperationStyles: {//表单左侧移出css
        height: 'calc(100% - 55px)',
        overflow: 'auto',
        paddingBottom: '53px',
        position: 'static'
      },
      tableData: {
        url: this.apiUrl.riskInspectRiskInspectPageList,//请求地址
        method: 'post',//请求方式
        where: {},//搜索条件
        height: 'auto',//表格高度 auto
        page: true,//分页是否使用
        columns: [//表头数据
          {type: 'index', width: 70, align: 'center', title: '序号'},
          {title: '隐患排查', minWidth: 145, key: 'riskInspectName'},
          {
            title: '排查类型', minWidth: 145, key: 'riskInspectType', render: (h, params) => {
              //1：计划排查，2：主动排查
              var color = '', test = '';
              if (params.row.riskInspectType == 1) {
                color = 'primary', test = '计划排查';
              } else if (params.row.riskInspectType == 2) {
                color = 'success', test = '主动排查';
              }
              return h('Tag', {props: {type: 'dot', color: color}}, test);
            }
          },
          {
            title: '排查数量', minWidth: 90,
            render: (h, params) => {
              return h('span', (!!params.row.riskPositionItemCheckCount ? params.row.riskPositionItemCheckCount : 0) + " / " + (!!params.row.riskPositionItemAllCount ? params.row.riskPositionItemAllCount : 0) + ' 项');
            }
          },
          {
            title: '隐患数量', minWidth: 90,
            render: (h, params) => {
              return h('span', (!!params.row.riskPositionItemAtFinCount ? params.row.riskPositionItemAtFinCount : 0)  + " / " + (!!params.row.riskPositionItemAtCount ? params.row.riskPositionItemAtCount : 0) + ' 项');
            }
          },
          {
            title: '排查状态', minWidth: 145, key: 'riskInspectState', render: (h, params) => {
              //0：未开始，1：排查中，2：已完成）
              var color = '', test = '';
              if (params.row.riskInspectState == 0) {
                color = 'error', test = '未完成';
              } else if (params.row.riskInspectState == 1) {
                color = 'success', test = '已完成';
              }
              return h('Tag', {props: {type: 'dot', color: color}}, test);
            }
          },
          {title: '隐患部位', minWidth: 145, key: 'riskPositionName'},
          {
            title: '隐患类型', minWidth: 145, key: 'riskPositionType', render: (h, params) => {
              //  （1：基础管理、2：设备设施、3：作业活动）
              if (params.row.riskPositionType == 1) {
                return h('Tag', {props: {type: 'dot', color: 'success'}}, '基础管理')
              } else if (params.row.riskPositionType == 2) {
                return h('Tag', {props: {type: 'dot', color: 'primary'}}, '设备设施')
              } else if (params.row.riskPositionType == 3) {
                return h('Tag', {props: {type: 'dot', color: 'warning'}}, '作业活动')
              }
            }
          },
          {
            title: '特种设备', minWidth: 100, key: 'riskPositionDeviceState', render: (h, params) => {
              return h('span', !!params.row.riskPositionDeviceState ? '是' : '否');
            }
          },
          {title: '排查部门', minWidth: 145, key: 'riskInspectInOrgName'},
          {
            title: '排查人员', minWidth: 145, key: 'riskInspectUserName', render: (h, params) => {
              return h('span', !!params.row.riskInspectUserName ? params.row.riskInspectUserName : '--');
            }
          },
          {
            title: '时间范围', minWidth: 180,
            render: (h, params) => {
              return h('span', params.row.riskInspectStartDate + ' 至 ' + params.row.riskInspectEndDate)
            }
          },
          {title: '运输企业', minWidth: 260, key: 'deptName'},
          {title: '创建时间', minWidth: 160, key: 'createTime'},
          {
            title: '操作', fixed: 'right', width: 130,
            render: (h, params) => {
              var operationButtons = [];

              operationButtons.push(
                h('span', {
                  style: {"color": "#2d8cf0", "cursor": "pointer"},
                  on: {
                    click: () => {
                      this.selectData = params.row;
                      this.seeMoreType = true;
                    }
                  }
                }, "查看")
              )

              var buttonList = [];

              if (params.row.riskInspectState != 1) {
                //排查
                buttonList.push(h('DropdownItem', {
                  nativeOn: {
                    click: () => {
                      this.selectData = JSON.parse(JSON.stringify(params.row));
                      this.hiddenTrouble = true;
                    }
                  }
                }, '排查'))
              }

              if (params.row.riskInspectState == 0 && params.row.riskInspectType == 2) {
                //删除
                buttonList.push(h('DropdownItem', {
                  nativeOn: {
                    click: () => {
                      let that = this;
                      that.$Modal.confirm({
                        title: '删除提醒',
                        content: '确定要删除选中的记录？',
                        onOk: () => {
                          that.spinShow = true;
                          that.axios.post(that.apiUrl.riskInspectRiskInspectDelete, {uuid: params.row.uuid}).then(res => {
                            that.spinShow = false;
                            if (!!res) {
                              that.$Message.success('数据删除成功.');
                              that.$refs.wzTbale.tableLoadData();
                            }
                          }).catch(err => {
                            console.log("失败", err)
                          })
                        },
                        onCancel: () => {
                          //点击取消
                        }
                      });
                    }
                  }
                }, '删除'))
              }


              if (buttonList.length > 0) {
                if (operationButtons.length > 0) {
                  operationButtons.push(h('Divider', {props: {type: 'vertical',}}, ''))
                }
                operationButtons.push(h('Dropdown', {props: {trigger: "hover", transfer: true}},
                  [
                    h('span', {style: {"color": "#2d8cf0", "cursor": "pointer"}}, '更多▼'),
                    h('DropdownMenu', {slot: "list"}, buttonList)
                  ])
                )
              }
              return operationButtons;
            }
          },
        ],
        format: {//返回数据格式
          list: ['data'],//数据list
          count: ['count'],//数据总量
        },
      },

    }
  },
  beforeCreate() {//beforeCreate创建前状态

  },
  created() {//created创建完毕状态
  },
  beforeMount() {//beforeMount挂载前状态   DOM 元素然后塞入页面的过程

  },
  mounted() {//mounted 挂载结束状态
    var that = this;

    //运输企业
    that.axios.post(that.apiUrl.coreDeptCoreDeptList, {}).then(res => {
      if (!!res) {
        that.subDeptList = res.data.data;
      }
    }).catch(err => {
      console.log("失败", err)
    })
  },
  methods: {//执行的方法
    addTableData() {//table添加
      var that = this;
      that.formTitle = "添加";
      that.selectData = {};
      that.formOperation = true;
    },
    searchSubmit() {//搜索
      let data = JSON.parse(JSON.stringify(this.formDataSearch));
      this.tableData.where = data;
      this.$refs.wzTbale.tableLoadData(true);
    },
    //添加修改触发后关闭刷新
    closeFun(data) {
      var that = this;
      if (data) {//添加修改 刷新表单
        that.$refs.wzTbale.tableLoadData();
      }
      that.formOperation = false;
    },
  },
  watch: {//监听

  },
  beforeUpdate() {//beforeUpdate 更新前状态

  },
  updated() {//updated 更新完成状态

  },
  beforeDestroy() {//beforeDestroy 销毁前状态

  },
  destroyed() {//destroyed 销毁完成状态

  }
}
</script>
<style lang="less">
._wz_hiddenPerils {
  display: flex;
  flex-direction: column;
}
</style>
